"use strict";
// async + await => generator + co
/*
async function read(){
  let filename =  await fs.readFile('./name1.txt','utf8');
  let age = await fs.readFile(filename,'utf8');

  return age;
}
read().then(data=>{
    console.log(data);
}).catch(err=>{
  console.log(err);
});
*/
//babel编译如下↓
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg); // it.next()
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }
  if (info.done) {
    resolve(value);
  } else {
    Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function() {
    var self = this,
      args = arguments;
    return new Promise(function(resolve, reject) {
      var gen = fn.apply(self, args);
      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }
      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }
      _next(undefined);
    });
  };
}
co(gen).then(data=>{

})

function read() {
  return _read.apply(this, arguments);
}

function _read() {
  _read = _asyncToGenerator(
    /*#__PURE__*/
    regeneratorRuntime.mark(function _callee() {
      var filename, age;
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch ((_context.prev = _context.next)) {
            case 0:
              _context.next = 2;
              return fs.readFile("./name1.txt", "utf8");

            case 2:
              filename = _context.sent;
              _context.next = 5;
              return fs.readFile(filename, "utf8");

            case 5:
              age = _context.sent;
              return _context.abrupt("return", age);

            case 7:
            case "end":
              return _context.stop();
          }
        }
      }, _callee);
    })
  );
  return _read.apply(this, arguments);
}
